@faapi/faapi 6.10.1 → 6.11.0

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/index.js CHANGED
@@ -7394,6 +7394,9 @@ var init_injectParams = __esm({
7394
7394
  function wrapResult(result, ctx) {
7395
7395
  return wrapOkResult(result, ctx.config);
7396
7396
  }
7397
+ function stashHandlerResult(ctx, result) {
7398
+ ctx.__faapiHandlerResult = result;
7399
+ }
7397
7400
  function mergeMeta(response, meta) {
7398
7401
  const hasMeta = meta.status !== void 0 || Object.keys(meta.headers).length > 0 || meta.setCookies.length > 0;
7399
7402
  if (!hasMeta) return response;
@@ -7462,7 +7465,9 @@ async function invokeHandler(handler, ctx, body, middlewares, injectors) {
7462
7465
  const result = await injectParamsAsync(handler, ctx, body, injectors);
7463
7466
  const sseResponse = pickSseAndAutoClose();
7464
7467
  if (sseResponse) return sseResponse;
7465
- return toResponse(wrapResult(result, ctx), meta);
7468
+ const response = await toResponse(wrapResult(result, ctx), meta);
7469
+ if (!(result instanceof Response)) stashHandlerResult(ctx, result);
7470
+ return response;
7466
7471
  } catch (err) {
7467
7472
  autoCloseSseOnError();
7468
7473
  throw err;
@@ -7473,7 +7478,9 @@ async function invokeHandler(handler, ctx, body, middlewares, injectors) {
7473
7478
  const result = await injectParamsAsync(handler, ctx, body, injectors);
7474
7479
  const sseResponse = pickSseAndAutoClose();
7475
7480
  if (sseResponse) return sseResponse;
7476
- return toResponse(wrapResult(result, ctx), meta);
7481
+ const response = await toResponse(wrapResult(result, ctx), meta);
7482
+ if (!(result instanceof Response)) stashHandlerResult(ctx, result);
7483
+ return response;
7477
7484
  } catch (err) {
7478
7485
  autoCloseSseOnError();
7479
7486
  throw err;
@@ -8575,6 +8582,7 @@ async function handleRequest(routes, rootDir, dist, req, res, outerMiddlewares,
8575
8582
  globalInjectors
8576
8583
  });
8577
8584
  const response = outerMiddlewares.length > 0 ? await compose(outerMiddlewares, ctx, routePipeline) : await routePipeline();
8585
+ res.__faapiHandlerResult = ctx.__faapiHandlerResult;
8578
8586
  await sendSuccessResponse(response, res);
8579
8587
  } catch (err) {
8580
8588
  if (res.destroyed || res.writableEnded) return;
@@ -9791,7 +9799,10 @@ async function createAppBase(options) {
9791
9799
  resolve3({
9792
9800
  status: mockRes.statusCode,
9793
9801
  headers: new Headers(mockRes._headers),
9794
- body: parsed
9802
+ body: parsed,
9803
+ // inject raw 捕获桥(第三跳):handler 原始返回值(handleRequest 从 ctx
9804
+ // 桥接到 res;未捕获时 undefined——语义见 InjectResponse.raw 注释)
9805
+ raw: mockRes.__faapiHandlerResult
9795
9806
  });
9796
9807
  });
9797
9808
  const listeners = server.listeners("request");