@lark-apaas/devtool-kits 0.1.0-alpha.6 → 0.1.0-alpha.8

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/index.d.cts CHANGED
@@ -129,7 +129,7 @@ interface OpenapiMiddlewareOptions {
129
129
  */
130
130
  declare function createOpenapiMiddleware(options: OpenapiMiddlewareOptions): RouteMiddleware;
131
131
 
132
- interface DevLogsMiddlewareOptions {
132
+ interface DevLogsMiddlewareOptions$1 {
133
133
  /** Directory containing log files */
134
134
  logDir?: string;
135
135
  }
@@ -137,7 +137,17 @@ interface DevLogsMiddlewareOptions {
137
137
  * Creates dev logs middleware for viewing application logs
138
138
  * Supports both rspack/webpack and Vite dev servers
139
139
  */
140
- declare function createDevLogsMiddleware(options?: DevLogsMiddlewareOptions): RouteMiddleware;
140
+ declare function createDevLogsMiddleware(options?: DevLogsMiddlewareOptions$1): RouteMiddleware;
141
+
142
+ interface DevLogsMiddlewareOptions {
143
+ logDir?: string;
144
+ fileName?: string;
145
+ }
146
+ /**
147
+ * Creates dev logs middleware for viewing application logs
148
+ * Supports both rspack/webpack and Vite dev servers
149
+ */
150
+ declare function createCollectLogsMiddleware(options?: DevLogsMiddlewareOptions): RouteMiddleware;
141
151
 
142
152
  /**
143
153
  * Register middlewares for Express-compatible servers or Vite
@@ -178,4 +188,4 @@ declare function createDevLogsMiddleware(options?: DevLogsMiddlewareOptions): Ro
178
188
  */
179
189
  declare function registerMiddlewares(server: ExpressApp | ViteMiddleware, middlewares: Middleware[], options?: Partial<MiddlewareContext>): Promise<void>;
180
190
 
181
- export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type RouteInfo, type RouteMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, normalizeBasePath, postprocessDrizzleSchema, registerMiddlewares };
191
+ export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type RouteInfo, type RouteMiddleware, createCollectLogsMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, normalizeBasePath, postprocessDrizzleSchema, registerMiddlewares };
package/dist/index.d.ts CHANGED
@@ -129,7 +129,7 @@ interface OpenapiMiddlewareOptions {
129
129
  */
130
130
  declare function createOpenapiMiddleware(options: OpenapiMiddlewareOptions): RouteMiddleware;
131
131
 
132
- interface DevLogsMiddlewareOptions {
132
+ interface DevLogsMiddlewareOptions$1 {
133
133
  /** Directory containing log files */
134
134
  logDir?: string;
135
135
  }
@@ -137,7 +137,17 @@ interface DevLogsMiddlewareOptions {
137
137
  * Creates dev logs middleware for viewing application logs
138
138
  * Supports both rspack/webpack and Vite dev servers
139
139
  */
140
- declare function createDevLogsMiddleware(options?: DevLogsMiddlewareOptions): RouteMiddleware;
140
+ declare function createDevLogsMiddleware(options?: DevLogsMiddlewareOptions$1): RouteMiddleware;
141
+
142
+ interface DevLogsMiddlewareOptions {
143
+ logDir?: string;
144
+ fileName?: string;
145
+ }
146
+ /**
147
+ * Creates dev logs middleware for viewing application logs
148
+ * Supports both rspack/webpack and Vite dev servers
149
+ */
150
+ declare function createCollectLogsMiddleware(options?: DevLogsMiddlewareOptions): RouteMiddleware;
141
151
 
142
152
  /**
143
153
  * Register middlewares for Express-compatible servers or Vite
@@ -178,4 +188,4 @@ declare function createDevLogsMiddleware(options?: DevLogsMiddlewareOptions): Ro
178
188
  */
179
189
  declare function registerMiddlewares(server: ExpressApp | ViteMiddleware, middlewares: Middleware[], options?: Partial<MiddlewareContext>): Promise<void>;
180
190
 
181
- export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type RouteInfo, type RouteMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, normalizeBasePath, postprocessDrizzleSchema, registerMiddlewares };
191
+ export { type GlobalMiddleware, type Middleware, type MiddlewareContext, type RouteInfo, type RouteMiddleware, createCollectLogsMiddleware, createDevLogsMiddleware, createOpenapiMiddleware, normalizeBasePath, postprocessDrizzleSchema, registerMiddlewares };
package/dist/index.js CHANGED
@@ -1370,8 +1370,8 @@ var require_node = __commonJS({
1370
1370
  }
1371
1371
  break;
1372
1372
  case "FILE":
1373
- var fs7 = __require("fs");
1374
- stream2 = new fs7.SyncWriteStream(fd2, {
1373
+ var fs9 = __require("fs");
1374
+ stream2 = new fs9.SyncWriteStream(fd2, {
1375
1375
  autoClose: false
1376
1376
  });
1377
1377
  stream2._type = "fs";
@@ -21250,8 +21250,8 @@ var require_node2 = __commonJS({
21250
21250
  }
21251
21251
  break;
21252
21252
  case "FILE":
21253
- var fs7 = __require("fs");
21254
- stream2 = new fs7.SyncWriteStream(fd2, {
21253
+ var fs9 = __require("fs");
21254
+ stream2 = new fs9.SyncWriteStream(fd2, {
21255
21255
  autoClose: false
21256
21256
  });
21257
21257
  stream2._type = "fs";
@@ -22020,8 +22020,8 @@ var require_node3 = __commonJS({
22020
22020
  }
22021
22021
  break;
22022
22022
  case "FILE":
22023
- var fs7 = __require("fs");
22024
- stream2 = new fs7.SyncWriteStream(fd2, {
22023
+ var fs9 = __require("fs");
22024
+ stream2 = new fs9.SyncWriteStream(fd2, {
22025
22025
  autoClose: false
22026
22026
  });
22027
22027
  stream2._type = "fs";
@@ -22942,11 +22942,11 @@ var require_view = __commonJS({
22942
22942
  "use strict";
22943
22943
  var debug = require_src3()("express:view");
22944
22944
  var path5 = __require("path");
22945
- var fs7 = __require("fs");
22945
+ var fs9 = __require("fs");
22946
22946
  var dirname = path5.dirname;
22947
22947
  var basename = path5.basename;
22948
22948
  var extname = path5.extname;
22949
- var join3 = path5.join;
22949
+ var join5 = path5.join;
22950
22950
  var resolve = path5.resolve;
22951
22951
  module.exports = View;
22952
22952
  function View(name, options) {
@@ -22995,12 +22995,12 @@ var require_view = __commonJS({
22995
22995
  }, "render");
22996
22996
  View.prototype.resolve = /* @__PURE__ */ __name(function resolve2(dir, file) {
22997
22997
  var ext = this.ext;
22998
- var path6 = join3(dir, file);
22998
+ var path6 = join5(dir, file);
22999
22999
  var stat = tryStat(path6);
23000
23000
  if (stat && stat.isFile()) {
23001
23001
  return path6;
23002
23002
  }
23003
- path6 = join3(dir, basename(file, ext), "index" + ext);
23003
+ path6 = join5(dir, basename(file, ext), "index" + ext);
23004
23004
  stat = tryStat(path6);
23005
23005
  if (stat && stat.isFile()) {
23006
23006
  return path6;
@@ -23009,7 +23009,7 @@ var require_view = __commonJS({
23009
23009
  function tryStat(path6) {
23010
23010
  debug('stat "%s"', path6);
23011
23011
  try {
23012
- return fs7.statSync(path6);
23012
+ return fs9.statSync(path6);
23013
23013
  } catch (e) {
23014
23014
  return void 0;
23015
23015
  }
@@ -23658,8 +23658,8 @@ var require_node4 = __commonJS({
23658
23658
  }
23659
23659
  break;
23660
23660
  case "FILE":
23661
- var fs7 = __require("fs");
23662
- stream2 = new fs7.SyncWriteStream(fd2, {
23661
+ var fs9 = __require("fs");
23662
+ stream2 = new fs9.SyncWriteStream(fd2, {
23663
23663
  autoClose: false
23664
23664
  });
23665
23665
  stream2._type = "fs";
@@ -23860,7 +23860,7 @@ var require_mime = __commonJS({
23860
23860
  "../../../node_modules/mime/mime.js"(exports, module) {
23861
23861
  "use strict";
23862
23862
  var path5 = __require("path");
23863
- var fs7 = __require("fs");
23863
+ var fs9 = __require("fs");
23864
23864
  function Mime() {
23865
23865
  this.types = /* @__PURE__ */ Object.create(null);
23866
23866
  this.extensions = /* @__PURE__ */ Object.create(null);
@@ -23882,7 +23882,7 @@ var require_mime = __commonJS({
23882
23882
  };
23883
23883
  Mime.prototype.load = function(file) {
23884
23884
  this._loading = file;
23885
- var map = {}, content = fs7.readFileSync(file, "ascii"), lines = content.split(/[\r\n]+/);
23885
+ var map = {}, content = fs9.readFileSync(file, "ascii"), lines = content.split(/[\r\n]+/);
23886
23886
  lines.forEach(function(line) {
23887
23887
  var fields = line.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/);
23888
23888
  map[fields.shift()] = fields;
@@ -24127,7 +24127,7 @@ var require_send = __commonJS({
24127
24127
  var escapeHtml = require_escape_html();
24128
24128
  var etag = require_etag();
24129
24129
  var fresh = require_fresh();
24130
- var fs7 = __require("fs");
24130
+ var fs9 = __require("fs");
24131
24131
  var mime = require_mime();
24132
24132
  var ms = require_ms5();
24133
24133
  var onFinished = require_on_finished();
@@ -24137,7 +24137,7 @@ var require_send = __commonJS({
24137
24137
  var Stream = __require("stream");
24138
24138
  var util = __require("util");
24139
24139
  var extname = path5.extname;
24140
- var join3 = path5.join;
24140
+ var join5 = path5.join;
24141
24141
  var normalize = path5.normalize;
24142
24142
  var resolve = path5.resolve;
24143
24143
  var sep = path5.sep;
@@ -24354,7 +24354,7 @@ var require_send = __commonJS({
24354
24354
  return res;
24355
24355
  }
24356
24356
  parts = path6.split(sep);
24357
- path6 = normalize(join3(root, path6));
24357
+ path6 = normalize(join5(root, path6));
24358
24358
  } else {
24359
24359
  if (UP_PATH_REGEXP.test(path6)) {
24360
24360
  debug('malicious path "%s"', path6);
@@ -24460,7 +24460,7 @@ var require_send = __commonJS({
24460
24460
  var i = 0;
24461
24461
  var self = this;
24462
24462
  debug('stat "%s"', path6);
24463
- fs7.stat(path6, /* @__PURE__ */ __name(function onstat(err, stat) {
24463
+ fs9.stat(path6, /* @__PURE__ */ __name(function onstat(err, stat) {
24464
24464
  if (err && err.code === "ENOENT" && !extname(path6) && path6[path6.length - 1] !== sep) {
24465
24465
  return next(err);
24466
24466
  }
@@ -24475,7 +24475,7 @@ var require_send = __commonJS({
24475
24475
  }
24476
24476
  var p = path6 + "." + self._extensions[i++];
24477
24477
  debug('stat "%s"', p);
24478
- fs7.stat(p, function(err2, stat) {
24478
+ fs9.stat(p, function(err2, stat) {
24479
24479
  if (err2) return next(err2);
24480
24480
  if (stat.isDirectory()) return next();
24481
24481
  self.emit("file", p, stat);
@@ -24492,9 +24492,9 @@ var require_send = __commonJS({
24492
24492
  if (err) return self.onStatError(err);
24493
24493
  return self.error(404);
24494
24494
  }
24495
- var p = join3(path6, self._index[i]);
24495
+ var p = join5(path6, self._index[i]);
24496
24496
  debug('stat "%s"', p);
24497
- fs7.stat(p, function(err2, stat) {
24497
+ fs9.stat(p, function(err2, stat) {
24498
24498
  if (err2) return next(err2);
24499
24499
  if (stat.isDirectory()) return next();
24500
24500
  self.emit("file", p, stat);
@@ -24507,7 +24507,7 @@ var require_send = __commonJS({
24507
24507
  SendStream.prototype.stream = /* @__PURE__ */ __name(function stream(path6, options) {
24508
24508
  var self = this;
24509
24509
  var res = this.res;
24510
- var stream2 = fs7.createReadStream(path6, options);
24510
+ var stream2 = fs9.createReadStream(path6, options);
24511
24511
  this.emit("stream", stream2);
24512
24512
  stream2.pipe(res);
24513
24513
  function cleanup() {
@@ -27345,7 +27345,7 @@ var require_response = __commonJS({
27345
27345
  var encodeUrl = require_encodeurl();
27346
27346
  var escapeHtml = require_escape_html();
27347
27347
  var http = __require("http");
27348
- var isAbsolute2 = require_utils2().isAbsolute;
27348
+ var isAbsolute3 = require_utils2().isAbsolute;
27349
27349
  var onFinished = require_on_finished();
27350
27350
  var path5 = __require("path");
27351
27351
  var statuses = require_statuses();
@@ -27551,7 +27551,7 @@ var require_response = __commonJS({
27551
27551
  done = options;
27552
27552
  opts = {};
27553
27553
  }
27554
- if (!opts.root && !isAbsolute2(path6)) {
27554
+ if (!opts.root && !isAbsolute3(path6)) {
27555
27555
  throw new TypeError("path must be absolute or specify root to res.sendFile");
27556
27556
  }
27557
27557
  var pathname = encodeURI(path6);
@@ -29161,6 +29161,127 @@ function createDevLogsMiddleware(options = {}) {
29161
29161
  }
29162
29162
  __name(createDevLogsMiddleware, "createDevLogsMiddleware");
29163
29163
 
29164
+ // src/middlewares/collect-logs/router.ts
29165
+ var import_express3 = __toESM(require_express2(), 1);
29166
+
29167
+ // src/middlewares/collect-logs/controller.ts
29168
+ import { join as join4 } from "path";
29169
+ import fs8 from "fs";
29170
+
29171
+ // src/middlewares/collect-logs/utils.ts
29172
+ import { isAbsolute as isAbsolute2, join as join3 } from "path";
29173
+ import fs7 from "fs";
29174
+ function resolveLogDir2(provided) {
29175
+ if (!provided) {
29176
+ return join3(process.cwd(), "logs");
29177
+ }
29178
+ return isAbsolute2(provided) ? provided : join3(process.cwd(), provided);
29179
+ }
29180
+ __name(resolveLogDir2, "resolveLogDir");
29181
+ function ensureDir(dir) {
29182
+ if (!fs7.existsSync(dir)) {
29183
+ fs7.mkdirSync(dir, {
29184
+ recursive: true
29185
+ });
29186
+ }
29187
+ }
29188
+ __name(ensureDir, "ensureDir");
29189
+ function serializeError2(error) {
29190
+ return error instanceof Error ? {
29191
+ name: error.name,
29192
+ message: error.message
29193
+ } : {
29194
+ message: String(error)
29195
+ };
29196
+ }
29197
+ __name(serializeError2, "serializeError");
29198
+
29199
+ // src/middlewares/collect-logs/controller.ts
29200
+ function collectLogsHandler(logDir, fileName) {
29201
+ const filePath = join4(logDir, fileName);
29202
+ ensureDir(logDir);
29203
+ return async (req, res) => {
29204
+ try {
29205
+ const logContent = req.body;
29206
+ const logLine = JSON.stringify(logContent) + "\n";
29207
+ await fs8.promises.appendFile(filePath, logLine);
29208
+ res.json({
29209
+ success: true
29210
+ });
29211
+ } catch (error) {
29212
+ handleError2(res, error, "Failed to collect logs");
29213
+ }
29214
+ };
29215
+ }
29216
+ __name(collectLogsHandler, "collectLogsHandler");
29217
+ function collectLogsBatchHandler(logDir, fileName) {
29218
+ const filePath = join4(logDir, fileName);
29219
+ ensureDir(logDir);
29220
+ return async (req, res) => {
29221
+ try {
29222
+ const logContents = req.body;
29223
+ if (!Array.isArray(logContents)) {
29224
+ return res.status(400).json({
29225
+ message: "logContents must be an array"
29226
+ });
29227
+ }
29228
+ const logLines = [];
29229
+ for (const logContent of logContents) {
29230
+ logLines.push(JSON.stringify(logContent) + "\n");
29231
+ }
29232
+ await fs8.promises.appendFile(filePath, logLines.join(""));
29233
+ res.json({
29234
+ success: true
29235
+ });
29236
+ } catch (error) {
29237
+ handleError2(res, error, "Failed to collect logs");
29238
+ }
29239
+ };
29240
+ }
29241
+ __name(collectLogsBatchHandler, "collectLogsBatchHandler");
29242
+ function handleError2(res, error, message = "Failed to collect logs") {
29243
+ res.status(500).json({
29244
+ message,
29245
+ error: serializeError2(error)
29246
+ });
29247
+ }
29248
+ __name(handleError2, "handleError");
29249
+
29250
+ // src/middlewares/collect-logs/router.ts
29251
+ function createDevLogRouter2(options = {}) {
29252
+ const logDir = resolveLogDir2(options.logDir);
29253
+ const router = import_express3.default.Router();
29254
+ router.post("/collect", import_express3.default.json(), collectLogsHandler(logDir, options.fileName || "client.log"));
29255
+ router.post("/collect-batch", import_express3.default.json(), collectLogsBatchHandler(logDir, options.fileName || "client.log"));
29256
+ return router;
29257
+ }
29258
+ __name(createDevLogRouter2, "createDevLogRouter");
29259
+
29260
+ // src/middlewares/collect-logs/index.ts
29261
+ var DEV_LOGS_ROUTES2 = [
29262
+ {
29263
+ method: "POST",
29264
+ path: "/collect",
29265
+ description: "Collect logs from client."
29266
+ }
29267
+ ];
29268
+ function createCollectLogsMiddleware(options = {}) {
29269
+ const { logDir } = options;
29270
+ return {
29271
+ name: "collect-logs",
29272
+ mountPath: "/dev/logs",
29273
+ routes: DEV_LOGS_ROUTES2,
29274
+ enabled: /* @__PURE__ */ __name((context) => context.isDev, "enabled"),
29275
+ createRouter: /* @__PURE__ */ __name((context) => {
29276
+ return createDevLogRouter2({
29277
+ logDir: logDir || context.logDir,
29278
+ fileName: options.fileName || "client.log"
29279
+ });
29280
+ }, "createRouter")
29281
+ };
29282
+ }
29283
+ __name(createCollectLogsMiddleware, "createCollectLogsMiddleware");
29284
+
29164
29285
  // src/middlewares/index.ts
29165
29286
  function isRouteMiddleware(middleware) {
29166
29287
  return "createRouter" in middleware && middleware.createRouter !== void 0;
@@ -29238,6 +29359,7 @@ async function registerMiddlewares(server, middlewares, options) {
29238
29359
  }
29239
29360
  __name(registerMiddlewares, "registerMiddlewares");
29240
29361
  export {
29362
+ createCollectLogsMiddleware,
29241
29363
  createDevLogsMiddleware,
29242
29364
  createOpenapiMiddleware,
29243
29365
  normalizeBasePath,